Fork me on GitHub

2018.4.17 元气满满的一天,适合刷题

2018.4.17

leetcode 283. Move Zeroes

题目详情

Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

大概意思就是,给你一个数组nums,操作数组变为 ‘0’ > 都在数组最后。

Example:

Input: matrix = [0, 1, 0, 3, 12]

Output: [1, 3, 12, 0, 0]

Explanation: [0,1,0,3,12] –> [1,3,12,…] –> [1,3,12,0,0,0]

思路

  • 把非0项从后往前放,用个常量记录非0个数,遍历完在list后补0

具体代码

1
2
3
4
5
6
7
8
9
10
11
12
var moveZeroes = function(nums) {
let pos = 0;
for(let i = 0; i < nums.length ; i++) {
if(nums[i] !== 0) {
nums[pos] = nums[i]
pos++
}
}
for(; pos < nums.length; pos++) {
nums[pos] = 0
}
};

leetcode 268. Missing Number

题目详情

Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array.

他会给一个缺一个数的等差数列为1的顺序数组,求缺少的元素

Example 1:

Input: [1,0,3]

Output: 2

思路

  • 最直观的一个方法是用等差数列的求和公式求出0到n之间所有的数字之和
  • 然后再遍历数组算出给定数字的累积和
  • 然后做减法,差值就是丢失的那个数字

具体代码

1
2
3
4
5
6
7
8
var missingNumber = function(nums) {
let len = nums.length
let sum = 0
for(let i = 0; i < len; i++) {
sum += nums[i]
}
return 0.5 * len * (len + 1) - sum
};

leetcode 766. Toeplitz Matrix

题目详情

A matrix is Toeplitz if every diagonal from top-left to >bottom-right has the same element.

Now given an M x N matrix, return True if and only if the matrix is Toeplitz.

如果一个矩阵的每一条斜对角线(左上到右下)上的元素都相等,则我们称它为托普利兹矩阵。现在输入一个M*N大小的矩阵,如果它是一个托普利兹矩阵,则返回true,如果不是,返回false。

Example 1:

Input: matrix = [

[3,2,1,5],

[7,3,2,1],

[4,7,3,2]

]

Output: True

思路

  • 遍历每一个元素,比较这个元素和它右下角元素的值是否相等,如果不相等,直接返回false,停止遍历。

具体代码

1
2
3
4
5
6
7
8
9
10
11
12
var isToeplitzMatrix = function(arr) {
var m = arr[0].length -1;
var n = arr.length-1;
for(var i = 0; i < n; i++) {
for(var j = 0; j <m; j++) {
if(arr[i][j] != arr[i+1][j+1]) {
return false
}
}
}
return true
};

2018.4.17 – End

-------------本文结束感谢您的阅读-------------
分享